SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


CREATE PROCEDURE [dbo].[SP_TASALD_EMPR_Q29]                      
/*-------------------------------------------------------------------------*/                      
/*----- Empresa           : OFISIS S.A.                                ----*/                      
/*----- Cliente           : OFISIS S.A.                                 ----*/                      
/*----- Sistema           : Contabilidad                               ----*/                      
/*----- Modulo            : Empresa                                    ----*/                      
/*----- Programa          : Reporte Inventarios y Balances(DET - AUXI) ----*/                
/*----- Nombre            : SP_TASALD_EMPR_Q29                         ----*/                      
/*----- Script            : TASALD_EMPR                                ----*/                      
/*----- Desarrollado por  : Percy Garc?a                               ----*/                      
/*----- Fecha             : 02/02/2004                                 ----*/                      
/*----- Base de Datos     : SQL 2000                                   ----*/                      
/*----- Version BD        :                                            ----*/                      
/*-------------------------------------------------------------------------*/                  
/*-------------------------------------------------------------------------*/              
/*----- Modificado 1 por : LMGP                                       -----*/              
/*----- Fecha Modifica   : 12/08/2004                                 -----*/              
/*----- Detalle Modifica : Reporte Con Filtro de Unidad               -----*/              
/*-------------------------------------------------------------------------*/                 
/*-------------------------------------------------------------------------*/        
/*----- Modificado 2 por : PDGV                                       -----*/        
/*----- Fecha Modifica   : 13/01/2005                                 -----*/        
/*----- Detalle Modifica : SE AUMENTO STATUS APR PARA SACAR ASTOS     -----*/        
-- CASO CTAS DE ORDEN----SI ES DEUDOR > 0 SE SUMA AL ACTIVO  
-- CASO CTAS DE ORDEN----SI ES ACREEDOR < 0 SE SUMA AL PASIVO  
/*-------------------------------------------------------------------------*/  
/*-------------------------------------------------------------------------*/                       
/*----- Drop proc SP_TASALD_EMPR_Q29                                   ----*/                      
/*----- Grant Execute on SP_TASALD_EMPR_Q29 to PUBLIC                  ----*/                      
/*----- SP_TASALD_EMPR_Q29 '01', 1, 2004, 2, 'R'                      ----*/                      
/*-------------------------------------------------------------------------*/                      
                      
 @ISCO_EMPR       TD_VC_002,                      
 @INNU_CNTB_EMPR  TD_IN_001,                   
 @ISCO_UNID_CNTB  TD_VC_003,             
 @INNU_ANNO       TD_IN_004_ANNO,                      
 @INNU_MESE       TD_IN_002_MESE,                      
 @ISTI_REPO       TD_VC_001, -- R = reporte T = tabla            
 @ISTI_INFO       TD_VC_001      
 
 As                      
                      
-- Declaro Variables de Trabajo                      
 Begin                       
 Declare                      
 @VSCO_CNTA_EMPR     TD_VC_020_CNTA,                      
 @VSCO_CNTA_0002     TD_VC_020_CNTA,                      
 @VSCO_CNTA_0003     TD_VC_020_CNTA,                      
 @CSCO_CNTA_QUIE     TD_VC_020_CNTA,                      
 @CSCO_CNTA_0003     TD_VC_020_CNTA,                      
 @CSCO_CNTA_EMPR     TD_VC_020_CNTA,                   
 @VSCO_CNTA_TEMP     TD_VC_020_CNTA,                   
 @CSDE_CNTA_EMPR     TD_VC_050,                      
 @CSDE_CNTA_0002     TD_VC_050,                      
 
@CSDE_CNTA_0003     TD_VC_050,                      
 @CNIM_MVTO_SALD     TD_NU_016_004,                       
 @VNNU_QUIE_0002     TD_IN_001,                      
 @VNNU_QUIE_0003     TD_IN_001,                      
 @VNNU_QUIE_MAXI     TD_IN_001,                      
 @VNIM_MVTO_ACTI     TD_NU_016_004,                       
 @VNIM_MVTO_PASI     TD_NU_016_004,                       
 @VNIM_MVTO_PATR     TD_NU_016_004,                       
 @VNIM_DEBE_0002     TD_NU_016_004,                       
 @VNIM_HABE_0002     TD_NU_016_004,                       
 @VNIM_DEBE_0003     TD_NU_016_004,                       
 @VNIM_HABE_0003     TD_NU_016_004,                       
 @VNIM_UTIL          TD_NU_016_004,                       
 @VSST_FLA1          TD_VC_001,                       
 @VSST_FLA2          TD_VC_001,                       
 @VSST_FLA3          TD_VC_001,                       
 @VSST_FLA4          TD_VC_001,                    
 @VNFA_VNTA_CNTA     TD_NU_015_006,                    
 @VNFA_CAMB_CNTA     TD_NU_015_006,                    
 @VSCO_MONE_UNID     TD_VC_003,                    
 @VSCO_MONE          TD_VC_003,                    
 @VNIM_DETA_ORIG     TD_NU_016_004,                       
 @VNIM_DETA_CNTB     TD_NU_016_004,                  
 @CSTI_CAMB          TD_VC_003,          
 @VSCA_WHER_LOCA     TD_VC_255,          
 @VNIM_CNTA_ORDE     TD_NU_016_004           
                    
                      
-- TABLA TEMPORAL                       
 Create Table #TWSALD_EMPR_Q27_1                      
 (NU_QUIE_0001 Int NULL,                       
 NU_QUIE_0002  Int NULL,                       
 DE_QUIE_0002  Varchar(50) NULL,                       
 CO_CNTA_QUIE  Varchar(20) NULL,                       
 DE_CNTA_QUIE  Varchar(50) NULL,                       
 CO_CNTA_EMPR  Varchar(20) NULL,                       
 DE_CNTA_EMPR  Varchar(200) NULL,                       
 IM_MVTO_TOTA  Numeric(16, 4) NULL,                       
 DE_CNTA_0002  Varchar(50) NULL,                       
 DE_CNTA_0003  Varchar(50) NULL,                       
 CO_CNTA_0003  Varchar(20) NULL,                       
 ST_VISU_0003  Varchar(1) NULL,                       
 IM_DEBE       Numeric(16, 4) NULL,                       
 IM_HABE       Numeric(16, 4) NULL,                       
 IM_DEBE_0002  Numeric(16, 4) NULL,                       
 IM_HABE_0002  Numeric(16, 4) NULL,                       
 IM_DEBE_0003  Numeric(16, 4) NULL,                       
 IM_HABE_0003  Numeric(16, 4) NULL,                       
 TI_AUXI_EMPR  Varchar(1) NULL,                       
 CO_AUXI_EMPR  Varchar(20) NULL,                       
 NO_AUXI       Varchar(100) NULL,                       
 FE_DOCU       DateTime NULL,                       
 TI_DOCU       Varchar(3) NULL,                       
 NU_DOCU       Varchar(20) NULL,                       
 IM_DETA_ORIG  Numeric(16, 4) NULL,                       
 IM_DETA_CNTB  Numeric(16, 4) NULL,                       
 ST_VISU_DETA  Varchar(1) NULL,                      
 IM_TOTA_ACTI  Numeric(16, 4) NULL,                       
 IM_TOTA_PASI  Numeric(16, 4) NULL,                       
 IM_TOTA_PATR  Numeric(16, 4) NULL,                       
 CO_MONE       Varchar(3) NULL,                      
 IM_UTIL       Numeric(16, 4) NULL,                    
 FA_CAMB Numeric(15,6) NULL, -- FACTOR DE CAMBIO DE CIERRE                    
 FE_VENC       DateTime NULL)  -- FECHA VENCIMIENTO                      
                      
  -- Para obtener el mayor y el menor nivel de quiebre de la tabla de Parametros                      
  Select @VNNU_QUIE_MAXI = NV_INFO_CNTA,                      
        @VNNU_QUIE_0002 = Convert(Int, SubString(NV_QUIE_CNTA, 1, 2)),                       
        @VNNU_QUIE_0003 = Convert(Int, SubString(NV_QUIE_CNTA, 3, 2))                       
  From TMPARA_CONT                  
    
  Where CO_EMPR =  @ISCO_EMPR       
      
If @ISTI_INFO = 'U'         
  Select @VSCA_WHER_LOCA = ' And T1.CO_UNID_CNTB = "' + @ISCO_UNID_CNTB + '" '          
Else         
  Select @VSCA_WHER_LOCA = ''                       
                       
 -- Declaro Cursor Acumulado                      
Exec('Declare CU_TASALD_EMPR_Q27_1 Cursor               
  For                       
Select SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0002 + '),               
         SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0003 + '),               
         t1.CO_CNTA_EMPR, Max(t2.DE_CNTA_EMPR),                       
         Sum(t1.IM_CARG_CNTB) - Sum(t1.IM_ABON_CNTB),                       
         Max(t3.DE_CNTA_EMPR), Max(t4.DE_CNTA_EMPR), MAX(t2.ST_CNTA_CAMB)                  
  From TASALD_EMPR t1, TMPLAN_EMPR t2, TMPLAN_EMPR t3, TMPLAN_EMPR t4                      
  Where t1.CO_EMPR =  "' + @ISCO_EMPR + '"               
     And t1.NU_CNTB_EMPR = ' + @INNU_CNTB_EMPR + '              
     And t1.NU_ANNO = ' + @INNU_ANNO + '              
     And t1.NU_MESE <= ' + @INNU_MESE  +          
     @VSCA_WHER_LOCA + '                
     And DataLength(t1.CO_CNTA_EMPR) = ' + @VNNU_QUIE_MAXI + '              
     And SubString(t1.CO_CNTA_EMPR, 1, 2) < "60"              
     And t1.TI_AUXI_EMPR IS NULL                      
     And t1.CO_AUXI_EMPR IS NULL                      
     And t1.CO_ORDE_SERV IS NULL        
     And t2.CO_EMPR = t1.CO_EMPR                      
     And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                      
     And t3.CO_EMPR = t1.CO_EMPR                      
     And t3.CO_CNTA_EMPR = SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0002 + ')               
     And t4.CO_EMPR = t1.CO_EMPR                      
     And t4.CO_CNTA_EMPR = SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0003 + ')                      
     Group by SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0002 + '), SubString(t1.CO_CNTA_EMPR, 1, ' + @VNNU_QUIE_0003 + '), t1.CO_CNTA_EMPR               
     Order by 1, 2, 3 ')              
                      
-- Inicializo Variables                      
    Select @CSCO_CNTA_QUIE = NULL                       
    Select @CSCO_CNTA_EMPR = NULL                       
    Select @CSDE_CNTA_EMPR = NULL                       
    Select @CNIM_MVTO_SALD = NULL                       
    Select @VNNU_QUIE_MAXI = 0                       
    Select @VNNU_QUIE_0002 = 0                       
    Select @VNNU_QUIE_MAXI = 0                       
    Select @VNIM_MVTO_ACTI = 0                       
    Select @VNIM_MVTO_PASI = 0                       
    Select @VNIM_MVTO_PATR = 0                       
    Select @VNIM_UTIL      = 0    
    Select @VNIM_CNTA_ORDE = 0                         
    Select @VSST_FLA1      = 'S'                       
    Select @VSST_FLA2      = 'S'                       
    Select @VSST_FLA3      = 'S'                       
    Select @VSST_FLA4      = 'S'                       
                      
/*-- OPCION ACUMULADA --*/                      
  Open CU_TASALD_EMPR_Q27_1                       
  Fetch CU_TASALD_EMPR_Q27_1 Into @CSCO_CNTA_QUIE, @CSCO_CNTA_0003, @CSCO_CNTA_EMPR,                          
     @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD, @CSDE_CNTA_0002, @CSDE_CNTA_0003,  @CSTI_CAMB                       
                
                      
  -- SETEO INICIAL                       
  Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                       
  Select @VSCO_CNTA_0003 = @CSCO_CNTA_0003                       
  Select @VNIM_DEBE_0002 = 0                       
  Select @VNIM_DEBE_0003 = 0                       
  Select @VNIM_HABE_0002 = 0                       
  Select @VSCO_CNTA_EMPR = ''                       
                    
  While @@Fetch_status = 0                      
   Begin                       
                    
  -- Inserto los Cuentas de Orden como quiebre 0                         
  /* -- INICIO CUENTAS DE ORDEN --*/                      
  If  SubString(@CSCO_CNTA_QUIE, 1, 1) = '0'                       
   Begin  ---- (A)                      
    Insert into #TWSALD_EMPR_Q27_1                      
     (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                       
      CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                      
     Values(1, 0, NULL,  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR, @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N', 'N')                             
  -- ACTUALIZA IMPORTES A 2 DIGITOS                      
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                       
     Begin                       
     If (@CNIM_MVTO_SALD <> 0 )                       
        Begin                       
        Select @VNIM_DEBE_0002 = @VNIM_DEBE_0002 + @CNIM_MVTO_SALD                       
        Select @VNIM_CNTA_ORDE = @VNIM_CNTA_ORDE + @CNIM_MVTO_SALD                       
        End                      
     End                       
  Else                       
     Begin                       
     Update #TWSALD_EMPR_Q27_1                       
     Set IM_DEBE_0002 = @VNIM_DEBE_0002,                       
     IM_HABE_0002 = NULL                       
     Where CO_CNTA_QUIE = @VSCO_CNTA_0002                      
                      
     Select @VNIM_DEBE_0002 = @CNIM_MVTO_SALD                       
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                       
     End                       
                      
  End                       
  /* -- FIN CUENTAS DE ORDEN --*/                      
                      
  -- Inserto los Activos como quiebre 1                         
                      
  /* -- INICIO CUENTAS DE ACTIVO --*/                      
  If SubString(@CSCO_CNTA_QUIE, 1, 1) > '0' And @CSCO_CNTA_QUIE < '40'                       
  Begin /* INICIO CTAS ACTIVO */                          
     -- ACTUALIZA ULTIMA CUENTA ORDEN                      
                      
     If @VSST_FLA1 = 'S'                      
     Begin                       
       Update #TWSALD_EMPR_Q27_1                       
       Set IM_DEBE_0002 = @VNIM_DEBE_0002,                       
       IM_HABE_0002 = NULL                       
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                      
     End                       
                      
    Insert Into #TWSALD_EMPR_Q27_1                      
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                       
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                      
    Values(1, 1, 'ACTIVO',  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR,                       
     @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N', 'N')                       
                      
    -- Acumulo el total para los Activos                      
  If (@CNIM_MVTO_SALD  <> 0)                       
    Begin                       
     Select @VNIM_MVTO_ACTI =  @VNIM_MVTO_ACTI +  @CNIM_MVTO_SALD                       
    End                      
                      
    Select @VSCO_CNTA_EMPR = 'X'                       
    Select @VSCO_CNTA_EMPR = CO_CNTA_EMPR                       
    From TTCNTA_DOCU              
    Where CO_EMPR = @ISCO_EMPR                       
    And CO_CNTA_EMPR = @CSCO_CNTA_EMPR                       
                
  If @VSCO_CNTA_EMPR != 'X'                       
    Begin                    
  Exec('              
    Insert into #TWSALD_EMPR_Q27_1                      
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003,               
 
    DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, FE_DOCU, FE_VENC, TI_DOCU, NU_DOCU,               
     CO_MONE, IM_DETA_ORIG, IM_DETA_CNTB, ST_VISU_DETA)                      
     Select 1, 1, "ACTIVO", "'+ @CSCO_CNTA_QUIE +'", "'+ @CSCO_CNTA_EMPR +'", NULL, NULL, "'+ @CSCO_CNTA_0003+'",               
     "'+ @CSDE_CNTA_0002 +'", "'+ @CSDE_CNTA_0003 +'", "N", t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, Max(t2.NO_AUXI),               
     NULL, NULL, NULL, NULL, NULL, 0.00,        
     IsNull( SUM( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_CNTB), 2))), 0) -         
     IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_CNTB), 2))), 0),  "S"               
     From TXMVTO_CNTB t1, TMAUXI_EMPR t2               
     Where t1.CO_EMPR = "'+ @ISCO_EMPR +'"              
     And t1.NU_CNTB_EMPR = '+ @INNU_CNTB_EMPR +'              
     And t1.NU_ANNO = '+ @INNU_ANNO +'              
     And t1.NU_MESE <= '+ @INNU_MESE +       
     @VSCA_WHER_LOCA + '                       
     And t1.CO_CNTA_EMPR = "' + @CSCO_CNTA_EMPR + '"              
     And t1.SI_MVTO_CNTB = "APR"        
     And t2.CO_EMPR =* t1.CO_EMPR               
     And t2.TI_AUXI_EMPR =* t1.TI_AUXI_EMPR               
     And t2.CO_AUXI_EMPR =* t1.CO_AUXI_EMPR               
     Group By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR            
     Having (IsNull( SUM( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_CNTB), 2))), 0) -                        
     IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_CNTB), 2))), 0) <> 0) ')              
                  
  End  --  /*--- FIN  If @VSCO_CNTA_EMPR != 'X' ---*/                      
                      
  -- ACTUALIZA IMPORTES A 2 DIGITOS                      
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                       
     Begin                     
     If (@CNIM_MVTO_SALD <> 0)                       
  Begin                       
        Select @VNIM_DEBE_0002 = @VNIM_DEBE_0002 + @CNIM_MVTO_SALD                       
        End                       
     End                       
  Else                       
   Begin                       
     If @VSST_FLA1 = 'N'                       
     Begin                       
     Update #TWSALD_EMPR_Q27_1                       
     Set IM_DEBE_0002 = @VNIM_DEBE_0002,                       
     IM_HABE_0002 = NULL                       
     Where CO_CNTA_QUIE = @VSCO_CNTA_0002                      
     End                     
                      
     Select @VNIM_DEBE_0002 = @CNIM_MVTO_SALD                       
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                       
   End                      
                      
  Select @VSST_FLA1 = 'N'                       
                
  End   /* -- FIN CUENTAS DE ACTIVO --*/                      
                      
                      
  /* -- INICIO CUENTAS DE PASIVO --*/                      
                      
  -- Inserto los Pasivos como quiebre 2                      
  If  @CSCO_CNTA_QUIE > '39' and  @CSCO_CNTA_QUIE < '50'                       
  Begin                  
   -- ACTUALIZA DEBE DE LA ULTIMA CUENTA DE ACTIVO                      
   If @VSST_FLA2 = 'S'                       
     Begin                       
     Update #TWSALD_EMPR_Q27_1                       
     Set IM_DEBE_0002 = @VNIM_DEBE_0002,                       
     IM_HABE_0002 = NULL                       
     Where CO_CNTA_QUIE = @VSCO_CNTA_0002                     End                       
                      
    Insert into #TWSALD_EMPR_Q27_1                      
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                       
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                      
    Values(2, 1, 'PASIVO',  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR,@CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N','N')                       
                      
   -- Acumulo el total para los Pasivos                      
  If (@CNIM_MVTO_SALD  <> 0)                       
    Begin                       
      Select @VNIM_MVTO_PASI =  @VNIM_MVTO_PASI +  @CNIM_MVTO_SALD                       
    End                      
                     
    Select @VSCO_CNTA_EMPR = 'X'                       
    Select @VSCO_CNTA_EMPR = CO_CNTA_EMPR                       
    From TTCNTA_DOCU                       
    Where CO_EMPR = @ISCO_EMPR                       
    And CO_CNTA_EMPR = @CSCO_CNTA_EMPR                       
                
-- DETALLE DE LAS CUENTAS DE PASIVO                
 If @VSCO_CNTA_EMPR != 'X'                       
    Begin                    
    Exec( 'Insert into #TWSALD_EMPR_Q27_1                      
     (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                       
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003,                       
     TI_AUXI_EMPR, CO_AUXI_EMPR, NO_AUXI, FE_DOCU, FE_VENC, TI_DOCU, NU_DOCU, CO_MONE, IM_DETA_ORIG, IM_DETA_CNTB, ST_VISU_DETA)                      
     Select 2, 1, "PASIVO", "'+ @CSCO_CNTA_QUIE +'", "'+ @CSCO_CNTA_EMPR +'", NULL, NULL, "'+ @CSCO_CNTA_0003 +'",               
     "'+ @CSDE_CNTA_0002 +'", "'+ @CSDE_CNTA_0003 +'", "N", t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, Max(t2.NO_AUXI),               
     NULL, NULL, NULL, NULL, NULL, 0.00,                       
     IsNull( SUM( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_CNTB), 2))), 0) -                        
     IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_CNTB), 2))), 0), "S"              
     From TXMVTO_CNTB t1, TMAUXI_EMPR t2                      
     Where t1.CO_EMPR = "'+ @ISCO_EMPR +'"              
     And t1.NU_CNTB_EMPR = '+ @INNU_CNTB_EMPR +'              
     And t1.NU_ANNO = '+ @INNU_ANNO +'              
     And t1.NU_MESE <= '+ @INNU_MESE +'              
     And t1.CO_CNTA_EMPR = "'+ @CSCO_CNTA_EMPR +'" '+        
     @VSCA_WHER_LOCA + '                     
     And t1.SI_MVTO_CNTB = "APR"        
     And t2.CO_EMPR =* t1.CO_EMPR                       
     And t2.TI_AUXI_EMPR =* t1.TI_AUXI_EMPR                       
     And t2.CO_AUXI_EMPR =* t1.CO_AUXI_EMPR                      
     Group By t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR            
     Having (IsNull( SUM( ( ROUND( (FLOOR((ASCII(t1.TI_OPER)/67)) * t1.IM_MVTO_CNTB), 2))), 0) -                        
             IsNull( SUM( ( ROUND( (FLOOR((65/ASCII(t1.TI_OPER))) * t1.IM_MVTO_CNTB), 2))), 0)) <> 0 ')              
                  
    End  --  /*--- FIN  If @VSCO_CNTA_EMPR != 'X' ---*/                      
                      
  -- ACTUALIZA IMPORTES A 2 DIGITOS                      
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                       
    Begin                       
     If (@CNIM_MVTO_SALD  <> 0)                       
       Begin                       
        Select @VNIM_HABE_0002 = @VNIM_HABE_0002 + @CNIM_MVTO_SALD                       
       End                       
    End                       
  Else                       
    Begin                       
     If @VSST_FLA2 = 'N'                       
     Begin                         
       Update #TWSALD_EMPR_Q27_1                       
       Set IM_DEBE_0002 = NULL,                       
       IM_HABE_0002 = @VNIM_HABE_0002                       
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                      
     End                      
     Select @VNIM_HABE_0002 = @CNIM_MVTO_SALD                       
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                       
    End                       
                      
  Select @VSST_FLA2 = 'N
'                       
  End                       
                      
  /* -- FIN CUENTAS DE PASIVO --*/                      
                      
  /* -- INICIO CUENTAS DE PATRIMONIO --*/                      
                      
  -- Inserto el Patrimonio como quiebre 3                      
  If  @CSCO_CNTA_QUIE > '49'                       
    Begin                       
     Select @VSST_FLA4 = 'N'                       
                      
     -- ACTUALIZA HABER DE LA ULTIMA CUENTA PASIVO                      
     If @VSST_FLA3 = 'S'                       
     Begin                       
       Update #TWSALD_EMPR_Q27_1                       
       Set IM_DEBE_0002 = NULL,                       
       IM_HABE_0002 = @VNIM_HABE_0002                       
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                      
     End                       
                      
    Insert into #TWSALD_EMPR_Q27_1                      
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE,                       
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA, CO_CNTA_0003, DE_CNTA_0002, DE_CNTA_0003, ST_VISU_0003, ST_VISU_DETA)                      
    Values(3, 1, 'PATRIMONIO',  @CSCO_CNTA_QUIE,  @CSCO_CNTA_EMPR,                       
    @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSCO_CNTA_0003, @CSDE_CNTA_0002, @CSDE_CNTA_0003, 'N', 'N')                       
                      
   -- Acumulo el total para el Patrimonio                      
  If (@CNIM_MVTO_SALD  <> 0)                       
    Begin                       
      Select @VNIM_MVTO_PATR =  @VNIM_MVTO_PATR + @CNIM_MVTO_SALD                       
    End                      
                      
  -- ACTUALIZA IMPORTES A 2 DIGITOS                      
  If @CSCO_CNTA_QUIE = @VSCO_CNTA_0002                       
   Begin                       
     If (@CNIM_MVTO_SALD  <> 0)                       
       Begin                
        Select @VNIM_HABE_0002 = @VNIM_HABE_0002 + @CNIM_MVTO_SALD                       
       End                       
   End                       
  Else                       
   Begin                       
    If @VSST_FLA3 = 'N'                       
      Begin                       
       Update #TWSALD_EMPR_Q27_1                       
       Set IM_DEBE_0002 = NULL,                       
       IM_HABE_0002 = @VNIM_HABE_0002                       
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                      
      End                      
     Select @VNIM_HABE_0002 = @CNIM_MVTO_SALD                       
     Select @VSCO_CNTA_0002 = @CSCO_CNTA_QUIE                       
    End                      
                      
  Select @VSST_FLA3 = 'N'                       
  End                      
                      
  /* -- FIN CUENTAS DE PATRIMONIO --*/                      
        If SubString(@CSCO_CNTA_EMPR,1, 2) = '59'                       
        Begin                       
          Select @VNIM_UTIL = @VNIM_UTIL + @CNIM_MVTO_SALD                       
        End                       
                    
 -- OBTENGO LA MONEDA DE LA CUENTA                  
             
     Fetch CU_TASALD_EMPR_Q27_1 Into @CSCO_CNTA_QUIE, @CSCO_CNTA_0003, @CSCO_CNTA_EMPR,                          
     @CSDE_CNTA_EMPR,  @CNIM_MVTO_SALD, @CSDE_CNTA_0002, @CSDE_CNTA_0003, @CSTI_CAMB                       
  End /*FIN WHILE*/                       
                      
  If @VSST_FLA4 = 'N'                       
  Begin                       
  Update #TWSALD_EMPR_Q27_1                       
       Set IM_DEBE_0002 = NULL,                       
      IM_HABE_0002 = @VNIM_HABE_0002                       
       Where CO_CNTA_QUIE = @VSCO_CNTA_0002                      
  End                      
                      
  Close CU_TASALD_EMPR_Q27_1                       
  Deallocate CU_TASALD_EMPR_Q27_1                                              
--  End If  /*-- FIN ISTI_REPO = 'A' --*/                      
                  
  -- SE COMENTO VISUALIZACION                       
/*  Update #TWSALD_EMPR_Q27_1                      
  Set ST_VISU_0003 = 'S'                       
  Where CO_CNTA_EMPR LIKE '10%'*/                      
    
---- CASO SALDO DE LAS CUENTAS DE ORDEN ES DEUDOR (> 0) ENTONCES SE SUMA AL ACTIVO    
---- CASO SALDO DE LAS CUENTAS DE ORDEN ES ACREEDOR (< 0) ENTONCES SE SUMA AL PASIVO    
    
 If @VNIM_CNTA_ORDE > 0     
    Begin     
    Select @VNIM_MVTO_ACTI = @VNIM_MVTO_ACTI + @VNIM_CNTA_ORDE    
    End     
 If @VNIM_CNTA_ORDE < 0     
    Begin     
    Select @VNIM_MVTO_PASI = @VNIM_MVTO_PASI + @VNIM_CNTA_ORDE    
    End     
                      
  Update #TWSALD_EMPR_Q27_1                      
  Set IM_TOTA_ACTI = @VNIM_MVTO_ACTI,                      
  IM_TOTA_PASI = @VNIM_MVTO_PASI,                      
  IM_TOTA_PATR = @VNIM_MVTO_PATR,                      
  IM_UTIL = @VNIM_UTIL                      
                  
 -- QRP                       
 If @ISTI_REPO = 'R'                       
 Select t1.NU_QUIE_0001, t1.NU_QUIE_0002,                      
 t1.DE_QUIE_0002, t1.CO_CNTA_QUIE, t1.CO_CNTA_0003, t1.DE_CNTA_0002, t1.DE_CNTA_0003,                      
 t1.CO_CNTA_EMPR, t1.DE_CNTA_EMPR,                      
 t1.IM_MVTO_TOTA, ST_VISU_0003, t1.IM_DEBE_0002, t1.IM_HABE_0002, t1.IM_DEBE_0003, t1.IM_HABE_0003,                      
 t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.NO_AUXI, t1.FE_DOCU, t1.TI_DOCU, t1.NU_DOCU,                      
 t1.CO_MONE, t1.IM_DETA_ORIG, t1.IM_DETA_CNTB, t1.ST_VISU_DETA,                      
 t1.IM_TOTA_ACTI, t1.IM_TOTA_PASI, t1.IM_TOTA_PATR, t1.IM_UTIL, t1.FE_VENC,                     
 ROUND(t1.FA_CAMB,3)                    
 From #TWSALD_EMPR_Q27_1 t1                      
 Where (t1.IM_MVTO_TOTA <> 0 Or t1.IM_MVTO_TOTA Is NULL)                 
 Order by t1.DE_QUIE_0002, t1.CO_CNTA_QUIE,                       
 t1.CO_CNTA_0003, t1.CO_CNTA_EMPR, t1.NU_QUIE_0001, t1.NU_QUIE_0002,  t1.ST_VISU_DETA,                      
 t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.FE_DOCU, t1.TI_DOCU, t1.NU_DOCU                     
                  
                   
 -- TABLA                      
 If @ISTI_REPO = 'T'                       
Select t1.DE_QUIE_0002 AS TITULO, t1.CO_CNTA_QUIE AS CUENTA_2DIGITOS, t1.CO_CNTA_0003 AS CUENTA_3DIGITOS,                      
 t1.DE_CNTA_0002 AS DESC_CUENTA_2DIGITOS, t1.DE_CNTA_0003 AS DESC_CUENTA_3DIGITOS,                      
 t1.CO_CNTA_EMPR AS CUENTA, t1.DE_CNTA_EMPR AS DES_CUENTA,                      
 t1.IM_MVTO_TOTA AS SALDO_CUENTA, t1.IM_DEBE_0002 AS DEBE_2DIGITOS, t1.IM_HABE_0002 AS HABER_2DIGITOS,           
 t1.IM_DEBE_0003 AS DEBE_3DIGITOS, t1.IM_HABE_0003 AS HABER_3DIGITOS,                      
 t1.TI_AUXI_EMPR AS TIPO_AUXILIAR, t1.CO_AUXI_EMPR AS COD_AUXILIAR, t1.NO_AUXI NOMBRE_AUXILIAR,                       
 t1.IM_DETA_ORIG AS  IMPORTE_DETALLE_ORIGEN, t1.IM_DETA_CNTB AS IMPORTE_DETALLE_CONTABLE,                      
 t1.IM_TOTA_ACTI AS ACTIVO, t1.IM_TOTA_PASI AS PASIVO, t1.IM_TOTA_PATR AS PATRIMONIO, t1.IM_UTIL AS UTILIDAD                     
 From #TWSALD_EMPR_Q27_1 t1                      
 Where (t1.IM_MVTO_TOTA <> 0 Or t1.IM_MVTO_TOTA Is NULL)                      
 Order by t1.NU_QUIE_0001, t1.NU_QUIE_0002, t1.CO_CNTA_QUIE, t1.CO_CNTA_0003, t1.CO_CNTA_EMPR, t1.ST_VISU_DETA,                      
 t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.FE_DOCU, t1.TI_DOCU, t1.NU_DOCU                      
                      
End   -- FIN AS BEGIN                       
/*----------------------------- Fin ---------------------------------*/                      
                
                
                
              
              
              
              
              
              
            
          
        
      
 
   
  






GO
